package br.com.catalogodigital.bean;

import java.io.IOException;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import javax.servlet.http.HttpSession;

import org.primefaces.model.UploadedFile;

import br.com.catalogodigital.dao.AnuncioDao;
import br.com.catalogodigital.entity.Anunciante;
import br.com.catalogodigital.entity.Anuncio;

@ManagedBean
@RequestScoped
public class AnuncioBean {

	private UploadedFile imgAnuncio;
	private Anuncio anuncio = new Anuncio();
	private AnuncioDao anuncioDao = new AnuncioDao();
	private AnuncianteBean anuncianteBean = new AnuncianteBean();
	private Anunciante anunciante = new Anunciante();
	private List<Anuncio> listaAnuncios;
	private String mapa;
	
	public void inserir() throws IOException {

		if (anuncioDao.buscarId(anuncio.getId()) != null) {

			salvarAlterar();

		} else {

			FacesContext fc = FacesContext.getCurrentInstance();
			ExternalContext ec = fc.getExternalContext();
			HttpSession session = (HttpSession) ec.getSession(false);

			anuncio.getAnunciante().setId(
					(Integer) session.getAttribute("idAnunciante"));

			anuncioDao.inserir(anuncio);
			
			session.setAttribute("idAnuncio", anuncio.getId());
			
			anuncioDao.iserirImagem(getImgAnuncio());
			
			anuncio.setFoto(anuncioDao.iserirImagem(getImgAnuncio()));
			
			anuncioDao.alterar(anuncio);

		}
		FacesContext faces = FacesContext.getCurrentInstance();
		ExternalContext context = faces.getExternalContext();
		context.redirect("gerenciardor-anuncios.xhtml");

	}

	public String excluir(Anuncio anuncio) {

		AnuncioDao anuncioDao = new AnuncioDao();

		anuncioDao.deletar(anuncio.getId());

		return "gerenciardor-anuncios.faces?faces-redirect=true";
	}

	public void alterar(Anuncio anuncio) {

		this.anuncio = anuncio;

	}

	public void salvarAlterar() throws IOException {
		AnuncioDao anuncioDao = new AnuncioDao();

		anuncioDao.alterar(this.anuncio);

	}

	public Anunciante getAnunciante() {
		return anunciante;
	}

	public void setAnunciante(Anunciante anunciante) {
		this.anunciante = anunciante;
	}

	public List<Anuncio> getListaAnuncios() {
		if (this.listaAnuncios == null) {
			AnuncioDao anuncioDao = new AnuncioDao();
			this.listaAnuncios = anuncioDao.listar();
		}

		return this.listaAnuncios;
	}

	public void setListaAnuncios(List<Anuncio> listaAnuncios) {
		this.listaAnuncios = listaAnuncios;
	}

	public AnuncioBean(UploadedFile imgAnuncio, Anuncio anuncio,
			AnuncioDao anuncioDao, AnuncianteBean anuncianteBean) {
		super();
		this.imgAnuncio = imgAnuncio;
		this.anuncio = anuncio;
		this.anuncioDao = anuncioDao;
		this.anuncianteBean = anuncianteBean;
	}

	public AnuncioBean() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Anuncio getAnuncio() {
		return anuncio;
	}

	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}

	public UploadedFile getImgAnuncio() {
		return imgAnuncio;
	}

	public void setImgAnuncio(UploadedFile file) {
		this.imgAnuncio = file;
	}

	public AnuncioDao getAnuncioDao() {
		return anuncioDao;
	}

	public void setAnuncioDao(AnuncioDao anuncioDao) {
		this.anuncioDao = anuncioDao;
	}

	public AnuncianteBean getAnuncianteBean() {
		return anuncianteBean;
	}

	public void setAnuncianteBean(AnuncianteBean anuncianteBean) {
		this.anuncianteBean = anuncianteBean;
	}

	public String getMapa() {
		return "<iframe src='https://www.google.com/maps/embed?pb=!1m20!1m8!1m3!1d3959.0725417279964!2d-34.82554438871774!3d-7.117592246530961!3m2!1i1024!2i768!4f13.1!4m9!1i0!3e6!4m0!4m5!1s0x7acdd25000a7627%3A0xad00f3e3ed7d6b07!2sPicanha+do+Bastos+Restaurante+e+Churrascaria+-+Av.+Profa.+Maria+Sales%2C+705%2C+Jo%C3%A3o+Pessoa+-+PB%2C+58039-130!3m2!1d-7.117201!2d-34.825995!5e0!3m2!1spt-BR!2sbr!4v1411526758388' width='300' height='400' frameborder='0' style='border:0'></iframe>";
	}

	public void setMapa(String mapa) {
		this.mapa = mapa;
	}

}
